
package com.situ.mail.shop.service.impl;
import com.situ.mail.shop.service.UploadService;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;

/**
 * ClassName: UploadServiceImpl
 *
 * @Author:
 * @Description:(类描述)
 */
@Service("uploadService")
public class UploadServiceImpl implements UploadService {

    private static Map<Integer, String> pathMap = new HashMap<Integer, String>();

    static {
        pathMap.put(1, "mailfile/userAvatar/");
        pathMap.put(2, "mailfile/goodImage/");
    }

    /**
     * @param partFile 上传的二进制数据对象
     * @param fileType 文件的类型：1.用户的图像，2.产品图片，3.;
     * @return
     */
    @Override
    public String doUploadFile(MultipartFile partFile, Integer fileType) {
        //判断二进制数据不为空
        if (!partFile.isEmpty()) {
            //取出上传的文件名称
            String fileName = partFile.getOriginalFilename();
            //得到上传文件的后缀
            String suffix = fileName.substring(fileName.lastIndexOf("."));
            //准备写出文件的绝对路径(有盘符的路径)
            //写出文件的根路径(以前都是使用ServletContext.getRealPath("."))
            String realPath = "E:/webfile/mail/";
            //写出文件的相对路径（保存到数据库中）
            String filePath = pathMap.get(fileType) + Calendar.getInstance().getTimeInMillis() + suffix;
            File toFile = new File(realPath + filePath);
            //判断一个写出文件的父目录如果不存在，则生成一下。
            File parentFile = toFile.getParentFile();
            if (!parentFile.exists()) {
                parentFile.mkdirs();
            }
            try {
                partFile.transferTo(toFile);
            } catch (IllegalStateException | IOException e) {
                e.printStackTrace();
            }
            return filePath;
        }
        return null;
    }
}
